package com.cn.zpark.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @PackageName: com.cn.zpark.utils
 * @ClassName: DBUtils
 * @Description:JDBC工具类
 * @author: RZS
 * @date: 2022/3/30  11:14
 */
public class DBUtils {
    // 定义连接数据库信息
    private static String driver;
    private static String url;
    private static String user;
    private static String pwd;

    // 初始化数据
    static {// 静态块：作用：在类加载的时候执行一次（只执行一次）
        // 1、加载配置文件流对象
        InputStream ins = DBUtils.class.getClassLoader().getResourceAsStream("./jdbc.properties");
        // 创建properties工具类
        Properties p = new Properties();


        try {
            // 加载配置文件
            p.load(ins);
            // 初始化连接信息
            driver = p.getProperty("driver");
            url = p.getProperty("url");
            user = p.getProperty("user");
            pwd = p.getProperty("pwd");

            // 注册驱动
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接对象
     * @return
     * @throws Exception
     */
    public static Connection getConn() throws Exception {
        return DriverManager.getConnection(url, user, pwd);
    }

    /**
     * 关闭资源
     * @param conn
     * @param res
     * @param stat
     */
    public static void close(Connection conn, ResultSet res, Statement... stat){
        try {

            if(res != null){
                res.close();
            }

            for (Statement statement : stat) {
                if(statement != null){
                    statement.close();
                }

            }

            if(conn != null){
                conn.close();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
